約 3,535,787 件
https://w.atwiki.jp/hiropknot/pages/57.html
★2013/04/08追記 ◆正規化 データの冗長性を少なくし、関連性の強いデータ項目(属性)をまとめて、一事実一箇所(1 fact in 1 place)にすること。 正規化を行うと、複数の項目で構成される属性は、単一の項目を持つ属性に分解される。 第一正規化 集団項目や繰り返し項目を別表にすること。 複数の項目で構成される属性は,単一の項目をもつ属性に分解される。 第二正規化 全ての項目が完全関数従属である状態にすること。 一つのデータが決まると、従属的に決まるデータを別グループにすること。 第三正規化 非キー項目に関数従属している項目を別の表に分割し、推移的関数従属を解消した状態にすること。 ボイスコッド正規化 第三正規形の条件を満たし、かつ、全ての属性が候補キーに完全関数従属している正規形。 ※従属について 関数従属 BがAに関数従属するとは、A(例:社員番号)を決めるとB(社員名)が一意に決定するというもの。 Aを決定項、Bを従属項といいA→Bであらわす。 完全関数従属 決定項に余分なものがないときにいう。社員番号→社員名など。 部分関数従属 決定項に余分なものがあるときにいう。 {社員番号、部署番号}→社員名など(部署番号がなくても社員名を特定できる)。 推移関数従属 主キー以外に従属するものをいう。 {社員番号}→{部署番号、部署名、社員名}のとき部署名は、部署番号にも従属しているので推移従属となる。 データベース方式 【データベースの3層スキーマ構造】 データベースの基本的な構成を3つの構造により定義したもの。 外部スキーマ データベースの利用者に必要なデータの定義。ビューなど。 利用者の必要とするデータの見方を表現する。 概念スキーマ データベースで管理する対象の業務とデータの内容を論理的な構造として表現したもの。 テーブルやテーブルの正規化など。 内部スキーマ 検索速度向上のためのデータの物理的な格納方法の定義。 インデックスやデータファイル配置など。 データベース設計 【関数従属性】 レコードのある項目が決まれば、ほかのデータ項目も一意に決まる関係の事。 【キーの種類】 スーパキー 標柱の行を一意に特定できる属性、あるいは属性の組のこと。 候補キー(Candidate Key) スーパキーの中で余分な属性は含まない、行を一意に識別するための必要最小限の属性によって構成されるスーパキーのこと。 主キーの「候補」となる。 主キー(Primary Key) 複数存在する候補キーの中から任意に選んだ一つの候補キーのこと。 主キーに選ばれなかった残りの候補キーを代替キー(Alternate Key)と呼ぶ。 【データベースの整合性管理】 データベース内に格納されたデータが矛盾のない状態である(=整合性がある)ことを保つための制約。 一意性制約 レコードの一意性を保障する制約 参照制約 データベースの参照関係、すなわち複数の表における相互関連の整合性に関する制約。 RESTRICT指定:親の行を削除するとき子がいれば削除不可 CASCADE指定:親の行を削除するとき子の行も同時に削除 SET NULL指定:親の行を削除したとき子の行の外部キーにNULLを設定 SET DEFAUTL指定:親の行を削除したとき子の行の外部キーに規定値を設定 存在制約 あるデータが存在するためには他のデータの存在が必要とされるという制約。 データの追加、削除に関する制約条件といえる。 参照制約で代替出来る。 更新制約 データベース中のデータの更新に関する制約。 データ更新時に、更新後のデータがとり得る値の範囲内に収まっているかという検証を行う。 形式制約 データ項目や定義域におけるデータ型や桁数などについての制約。 データ操作 【導出表】 1つ以上の基礎となる表(実表)から関係データベース操作によって作成される仮想の表のこと。 SQLにおいては「CREATE VIEW」文で作成される。 データベース応用 【ツール】 ETL(Extract、Transorm、Load)ツール Extract、Transrom、Loadというデータウェアハウス構築における3つの工程の頭文字を合わせたもの。 データを抽出(Extract)し、変換・加工(Transorm)し、ロード・書き出し(Load)する。 OLAPツール データウェアハウスなどの多次元データベースを分析するためのソフトウェア。 データマイニングツール 統計解析手法を用いてデータウェアハウスの膨大なデータの中から隠れた関係性などを導く作業を支援するツール。 統計ツール データ群に対して様々な統計分析を行うことができるソフトウェア。 【ストアドプロシージャ】 一連のSQL命令からなるデータベース処理手続き(プログラム)を、あらかじめ実行可能な状態でデータベース内に格納しておき、クライアントからCall文により呼び出し、実行する方式。 ストアドプロシージャの利点 1つずつSQL文を送信する必要がない。 クライアントとサーバ間の通信量を軽減できる。 共通のSQL文によるデータベースアクセス手続きをクライアントに提供できる。 機密性の高いデータに対する処理をプロシージャすることで、セキュリティを向上させることが出来る。 【2相コミットプロトコル】 分散システム内の全ノードがコミットに合意するというプロトコル。 複数のトランザクションの中から調停者(Coordinator)が選ばれ、残りが参加者(Participant)となる。 <1相(Phase 1)> 調停者がコミット可否の問い合わせを実施。(Prepare) ↓ 全参加者がコミット可の応答。 ↓ 調停者からのCommitまたはAbortの実行指示待ちのブロック状態。 ↓ <2相(Phase 2)> 調停者がコミット実行指示。 ↓ 全参加者がコミット実行の応答。 ※2相で行うコミットまたはロールバックの指示の直前に調停者に障害や通信障害が発生した場合、調停者の指示が参加者に届かなくなる。 その場合、調停者の回復処理が終わるまで全参加者がコミットもロールバックも行えない状態となる。 この状態をブロック状態と呼ぶ。 【障害回復管理】 障害の種類 媒体障害:データベースが格納されている記憶媒体にディスク損傷やアクセス故障が発生してデータが使えない状態になること。 システム障害:OSのバグによりシステムがダウンする状態のこと。 トランザクション障害:アプリケーションプログラムのバグやデッドロック発生によるトランザクション強制終了のこと。 システムが媒体障害以外の原因によって停止した場合は、チェックポイントの取得以前に終了したトランザクションについての回復作業は不要である。 ※チェックポイントとは データベースでの更新処理は,主記憶で更新内容を保存している状態からディスクに書込むことで確定する。 チェックポイントとは,このディスクに書き込むタイミングのこと。 チェックポイントを設定することで,障害発生時に直近のチェックポイントの時点からリスタートできる。
https://w.atwiki.jp/poritekugame/pages/21.html
キャラクターデータベース アイテムデータベース モンスターデータベース 変数データベース
https://w.atwiki.jp/mathmania/pages/12.html
データベースとは? e-wordsデータベース これによると、近年主流のデータベースには リレーショナルデータベース オブジェクトデータベース の二種類がある。 オブジェクトデータベース 利点 元々がグラフを扱うために開発された オブジェクト指向言語と親和性がいい スムーズに導入することができる 問題点 アプリケーション間の互換性が低い 知名度、利用度が少ない リレーショナルデータベース 利点 知名度、利用頻度が高い。 高信頼性のあるRDBMSがある(オラクル) 問題点 SQL文を習得する必要がある オブジェクト指向との親和性が考えられていない(導入の際にモジュール開発が必要になるだろう)
https://w.atwiki.jp/lovegamers/pages/225.html
個人で行われているデータベースをまとめたページです。 編集自由になっているものにはぜひご協力ください。 成長型メモ(成長型調べ) 各年齢時における練習の数値の伸びを記録するデータベースです。 記録が合わされば現在不明瞭な成長型の解明に役立ちます。 https //docs.google.com/spreadsheets/d/1KaHsumkOXuPSxN0iExHDkxj2gNYFPNbVk6bVfhDOkcg/edit 転生統計 成長型メモの転生調査をもとに統計をまとめるデータベースです。https //docs.google.com/spreadsheets/d/1eFZBSRB8OllgcQyJDeT4fQwg5ybXhr0BV7PXCjKSdPE/edit#gid=0 練習期待値・グキ率別練習回数 上のデータを元に期待値を計算したものです。 https //docs.google.com/spreadsheets/d/e/2PACX-1vQbIArfgobw1YQN3b6PlvHF3XTbXSeJK-2hDGqsIG3yLcy7VHheqeso4GRq14kMdpqOteB0-PDql4p5/pubhtml 12球団背番号データベース 12球団の歴代背番号をまとめるデータベースです。 https //docs.google.com/spreadsheets/d/11XM1KWfdi5YjdusUhBDS52lcGwbY4hDSCIozAqthc5Q/edit 4番遍歴(β版) 12球団の歴代4番バッターをまとめるデータベースです。 https //docs.google.com/spreadsheets/d/1AHyyqqzIoYl7iKW0S9TznbfpRuXA1mvzjfwV7P_HtQA/edit 開幕投手一覧 12球団の歴代開幕投手をまとめるデータベースです。 https //docs.google.com/spreadsheets/d/1fqiDlXguqXZPNIIIUOdAUfYGpPN9L46IcC3yrJCHl9s/edit セットアッパー一覧 12球団の歴代セットアッパーをまとめるデータベースです。 https //docs.google.com/spreadsheets/d/1cx9h_0pd_3uKbeUjrCOu0MBERw8p-L1GccHJTHvc2eQ/edit#gid=0 クローザー一覧 12球団の歴代クローザーをまとめるデータベースです。 https //docs.google.com/spreadsheets/d/1qBL_TQSz87nU3f2wM7-PpNvQjJ-ZVhjF0hJSEAX2SHk/edit#gid=0 シーズン記録(β版) β版でのシーズン記録をまとめるデータベースです。 https //docs.google.com/spreadsheets/d/1Yr_LLOKAljodKKUCHrSNIX8Q4wf_9_Iiq_EKSW6YljQ/edit 野手一覧(閲覧のみ) β版での各年度毎開幕前の野手能力一覧のデータベースです。データの取得時刻は毎年一定ではありません。 https //docs.google.com/spreadsheets/d/1tmf2_-FrzpsOv2RWlsVoPFsDllbvHcMxWVoCJc63Lb4/edit 投手一覧(閲覧のみ) β版での各年度毎開幕前の投手能力一覧のデータベースです。データの取得時刻は毎年一定ではありません。 https //docs.google.com/spreadsheets/d/148DQ8iJi-ouiijNQMxpH_ey5d00MoprPBxN-ycfBfvk/edit 引退選手一覧(閲覧のみ) β版での引退選手の通算成績のデータベースです。タイトルに漏れがある場合は教えてください。 https //docs.google.com/spreadsheets/d/1m5Xorg4ODgV-R-EWNFUd93vmtNkkZzm2XaKwVyvIOPg/edit 選手大図鑑 BBLβ版の選手の能力と成績を閲覧できるデータベースです。下のURLはランキングです。 https //docs.google.com/spreadsheets/d/150z5c2rUdbJdCbjwyRXbv-6n39tMlPg98DJCsgVdH5I/edit https //goo.gl/t5SkHQ 順位変遷 + ... 順位表 https //docs.google.com/spreadsheets/d/1GVuou2W-EAmiLF8cUl7F6M72es_98mSV6o-FkM0smfk/edit ポストシーズン https //docs.google.com/spreadsheets/d/1wY9lSSpuz_HuLMfEvah2pweZIlT2oIKWl2JfvAPAj6k/edit 交流戦順位表 https //docs.google.com/spreadsheets/d/1z7PzYIA-74vTxiUNuDrs5Adf1yAtNKuZu7PlXeMJJ8A/edit 順位変遷グラフ 1年度~133年度成績一覧データ BBLβ版の選手成績一覧です。はすぃもとさんに感謝!! https //docs.google.com/spreadsheets/d/12Ol-Okl1UhCVHeERFSYU6YkbewvEyWmhMwnpH0025r4/edit#gid=0 サンキューデータニキ! -- 名無しさん (2018-01-22 12 21 39) 歴代4番はもう更新しないのかな? -- 名無しさん (2018-03-01 10 25 38) 歴代ベストナインとかみたいな… -- 名無しさん (2018-03-01 21 20 49) 此処も好き放題いじれるんか・・・ -- うんち (1919-08-10 11 45 14) 成績一覧追加しました。はすぃもとさんありがとうございます!! -- wiki製作者 (2018-10-18 12 22 14) 転生統計の投手計算機(球種・特能・新球可)のシートの球質のとこ壊れてるわね。 -- 名無しさん (2018-11-07 08 27 22) 成長型メモと練習シミュレーター壊れてますねぇ -- 名無しさん (2023-05-09 01 26 29) 名前 コメント
https://w.atwiki.jp/bururu_gis/pages/17.html
研究室のデータベースです。 データベース(未加工データ(外部から購入したり、もらったデータ)) データベース(加工データ) データベース(研究室オリジナルデータ)
https://w.atwiki.jp/skmt200x/pages/153.html
データベースに関するメモ。 データベースソフトウェアを採用する上での(独断的な)評価項目インストール(導入)が容易かどうか?インストーラが揃っているか?完成度が高いかどうか? ライセンスが有償/無償? 運用関連のツール等が揃っているかどうか?バックアップ/リストア GUIの管理ソフトウェア 開発インターフェースが揃っているか? データベース関連ソフトウェアPostgreSQL TOPへ編集 データベースソフトウェアを採用する上での(独断的な)評価項目 インストール(導入)が容易かどうか? Oracleみたいにカーネルパラメータの調整や、環境変数の準備が面倒なソフトウェアは、その分導入のしきいが高い。 (その分、機能面・性能面でのメリットはあるかもしれないが、そこまでの機能・性能を必要とするかどうか?) インストーラが揃っているか?完成度が高いかどうか? OracleのUniversal Installerは完成度が高いが、rpm版のPostgreSQLやMySQL、MS SQL Serverと比較すると、それでも難しい。 一方でOracleの有識者は多くインターネットにも十分な情報があるため、企業では実績の有無やサポート面で採用が容易な側面もある。 ライセンスが有償/無償? 小規模案件やパッケージソフトウェアで採用が可能かどうか? 無償でも、サポート工数がかかる場合は、結果として割高になる場合も。 パッケージソフトウェアなどで、目的を限定したデータベースとして使う分にはOSSのデータベースで十分。 運用関連のツール等が揃っているかどうか? バックアップ/リストア オンライン/オフラインバックアップ、論理バックアップおよび物理バックアップを行うためのツール・インターフェース等が揃っているかどうか? GUIの管理ソフトウェア SQLやコマンドラインでのみの操作だけではなく、GUIのツール等でデータベース・テーブル・ストアドプロシージャなどの管理が行えるかどうか? 開発インターフェースが揃っているか? Javaや.NET、Ruby、Python、perlなどのインターフェースがあるかどうか? TOPへ編集 データベース関連ソフトウェア PostgreSQL 最終更新日 [2014-12-30]
https://w.atwiki.jp/r-intro/pages/54.html
目次 目次 SQLiteを使う SQLiteのデータベースを作成する SQLiteのデータベースにテーブルを作成する SQLiteのデータベースに含まれるテーブルを一覧表示する MySQLのデータベースに接続する SQLのselect文を使用してデータフレームを操作する SQLiteを使う データベース管理システムの一つであるSQLiteをRで使うには、RSQLiteパッケージを使えばよい。 options(repos = "https //ftp.yz.yamagata-u.ac.jp/pub/cran/") install.packages("RSQLite") パッケージを ‘C /Users/○○○/AppData/Local/R/win-library/4.3’ 中にインストールします (‘lib’ が指定されていないため) 依存対象 (dependency) ‘DBI’ もインストールします (表示省略) SQLiteのデータベースを作成する パッケージRSQLiteにおいてデータベースはデータベースのファイルそのものであり、dbConnect関数でファイルを指定して接続するとファイルが存在すれば自動的にファイルが作成され、それがデータベースになる。ファイルが存在すれば、既存のデータベースに接続することになる。 以下は、存在しないprincess.sqliteというファイルを指定して接続を行い、umamusumeというテーブルを書き込んで接続を閉じた例。最後に接続を閉じることを忘れないこと(閉じないとファイルに処理した内容が書き込まれない)。 file.exists("princess.sqlite") [1] FALSE library(RSQLite) con - dbConnect(SQLite(), "princess.sqlite") dtf - data.frame( + no = c(30, 45, 58), + name = c("ライスシャワー", "スーパークリーク", "メイショウドトウ"), + seiyu = c("石見舞菜香", "優木かな", "和多田美咲")) print(dtf) no name seiyu 1 30 ライスシャワー 石見舞菜香 2 45 スーパークリーク 優木かな 3 58 メイショウドトウ 和多田美咲 dbWriteTable(con, "umamusume", dtf) dbDisconnect(con) file.exists("princess.sqlite") [1] TRUE file.info("princess.sqlite")$size [1] 8192 file.size("princess.sqlite") [1] 8192 閉じたデータベースを改めて接続して読み込んでみる。 con - dbConnect(SQLite(), "princess.sqlite") dbGetQuery(con, "select * from umamusume") no name seiyu 1 30 ライスシャワー 石見舞菜香 2 45 スーパークリーク 優木かな 3 58 メイショウドトウ 和多田美咲 dtf - dbGetQuery(con, "select * from umamusume") print(dtf) no name seiyu 1 30 ライスシャワー 石見舞菜香 2 45 スーパークリーク 優木かな 3 58 メイショウドトウ 和多田美咲 dbDisconnect(con) SQLiteのデータベースにテーブルを作成する dbWriteTable関数にデータフレームを指定すると、そのデータフレームの構造のテーブルが作成される。以下は、あらかじめ作成したデータフレームdtfを書き込んでテーブルを作成した例。dbExistsTable関数は、指定した接続先に指定したテーブルがあるか否かを判定する関数。テーブルの中身を読み込むにはdbReadTable関数を使う。テーブル内のすべてのフィールド名(列名)を得るにはdbListFileds関数を使う。 library(RSQLite) con - dbConnect(SQLite(), "princess.sqlite") dbExistsTable(con, "macross_delta") [1] FALSE print(dtf) no mei sei fname lname seiyu 1 1 カナメ バッカニア Kaname Buccaneer 安野希世乃 2 2 フレイア ヴィオン Freyja Wion 鈴木みのり 3 3 美雲 ギンヌメール Mikumo Guynemer 小清水亜美 4 4 マキナ 中島 Makina Nakajima 西田望見 5 5 レイナ プラウラー Reina Prowler 東山奈央 dbWriteTable(con, "macross_delta", dtf) dbExistsTable(con, "macross_delta") [1] TRUE 書き込んだテーブルを読み出してみる。 dtf2 - dbReadTable(con, "macross_delta") print(dtf2) no mei sei fname lname seiyu 1 1 カナメ バッカニア Kaname Buccaneer 安野希世乃 2 2 フレイア ヴィオン Freyja Wion 鈴木みのり 3 3 美雲 ギンヌメール Mikumo Guynemer 小清水亜美 4 4 マキナ 中島 Makina Nakajima 西田望見 5 5 レイナ プラウラー Reina Prowler 東山奈央 dbListFields(con, "macross_delta") [1] "no" "mei" "sei" "fname" "lname" "seiyu" dbDisconnect(con) SQLiteのデータベースに含まれるテーブルを一覧表示する dbListTablesを使う。引数には接続を指定する。以下は、2つのテーブルが含まれたあらかじめ作成してあるデータベースで一覧表示させた例。dbListFields関数は、指定したテーブルのすべてのフィールド名(列名)を返す。 con - dbConnect(SQLite(), "princess.sqlite") dbListTables(con) [1] "macross_delta" "umamusume" dbListFields(con, "macross_delta") [1] "no" "mei" "sei" "fname" "lname" "seiyu" dbListFields(con, "umamusume") [1] "no" "name" "seiyu" dbDisconnect(con) MySQLのデータベースに接続する RMySQLパッケージを使う。以下は、あらかじめサービスが稼働しているMySQLのデータベースを一覧表示させた例。データベースに接続するにはdbConnect関数を使う。dbGetQuery関数を使うことでコマンドを実行することができる。すべての作業が終了したらdbDisconnect関数で接続を切断することを忘れない。以下の1~3, 5はMySQLに最初から組み込まれているデータベースで、4のprincessは別環境で作成したデータベース。以下のとおりにR環境下でも存在を確認することができる。 dbConnect関数使用時は、アカウント、パスワード、接続先を指定する必要がある。以下の例では、rootアカウントでパスワードはpassとしている。hostにlocalhostを指定すると、ローカルホストに接続する。 library(RMySQL) drv - dbDriver("MySQL") con - dbConnect(drv, user = root , password = pass , host = localhost ) dbGetQuery(con, "show databases") Database 1 information_schema 2 mysql 3 performance_schema 4 princess 5 sys dbDisconnect(con) [1] TRUE SQLのselect文を使用してデータフレームを操作する sqldfパッケージのsqldf関数を使う。 umamusume no name prizemoney seiyu dummydate 1 8 ウオッカ 13.0487 大橋彩香 2031/02/03 2 30 ライスシャワー 6.6686 石見舞菜香 2032/11/12 3 45 スーパークリーク 5.5610 優木かな 2033/11/12 4 58 メイショウドトウ 9.2133 和多田美咲 2033/12/31 library(sqldf) sqldf("select * from umamusume") no name prizemoney seiyu dummydate 1 8 ウオッカ 13.0487 大橋彩香 2031/02/03 2 30 ライスシャワー 6.6686 石見舞菜香 2032/11/12 3 45 スーパークリーク 5.5610 優木かな 2033/11/12 4 58 メイショウドトウ 9.2133 和多田美咲 2033/12/31 sqldf("select name, seiyu from umamusume where no = 30 and no = 50") name seiyu 1 ライスシャワー 石見舞菜香 2 スーパークリーク 優木かな
https://w.atwiki.jp/karaiknowledge/pages/37.html
データベースとは データベースとはデータを用意に扱うシステムである 各種データベースへのリンク MySQL
https://w.atwiki.jp/pbw_quintet/pages/18.html
―――――――――――――――――――― データベース ―――――――――――――――――――― データベースについて QUINTET上のデータベースです。兵科の詳細や五合市の街並みなど、登録やRPにご利用ください。 兵科一覧 得意・不得意・特殊分野一覧 これまでのストーリー? 五合市スポット? 五合市人物伝?
https://w.atwiki.jp/cafemilk/pages/32.html
ログデータベース CAFEMILK SHOPIING CART V5 ではカンマ区切りCSV形式のデータベースを用います。文字コードは UTF-8N となります。 エクセルの書式に対応しています。 データベース運用の方法は用途に合わせて基本データベースとログデータベースの二種類があります。 データベース関連の処理はフレームワークとなっていますので、カスタマイズ時の実装作業が楽です。レコードの各項目は SQL のようにカラム名をつけて操作することができ、効率的です。 独自仕様であるため、SQL に常態化しているようなデータベースインジェクション脆弱性の危険がありません。 ログデータベースの概要 ログデータベースは、レコードを収めた10のファイルとそのカラム名を収めたファイルの11ファイルからなるデータベースを運用する形態となります。レコードは古くなると消えます。(ログローテンションします。) Flock を用いてロックすることはしません。 ログデータベースでは書き込みは追記しかできません。 ログデータベースを扱うモジュールのファイル名は以下の通りです。 cafemilk_database_log.pl cafemilk_database_log.pl のあるディレクトリは以下の通りです。 [Apache_server] └ [cgi-bin] └ [pl] ログデータベースの扱うデータベースのファイルは例えば以下の通りです。 item_news.0.log.csv.cgi 新着商品のレコード0 item_news.1.log.csv.cgi 新着商品のレコード1 item_news.2.log.csv.cgi 新着商品のレコード2 item_news.3.log.csv.cgi 新着商品のレコード3 item_news.4.log.csv.cgi 新着商品のレコード4 item_news.5.log.csv.cgi 新着商品のレコード5 item_news.6.log.csv.cgi 新着商品のレコード6 item_news.7.log.csv.cgi 新着商品のレコード7 item_news.8.log.csv.cgi 新着商品のレコード8 item_news.9.log.csv.cgi 新着商品のレコード9 item_column_list.csv... 新着商品のカラム名 データベースは標準にてセーフモードで運用されます。パーミッションファイルのないディレクトにあるデータベースの読み書きはできません。 標準のセーフモードは以下のように指定されています。 $config- {database}{safety} = 1 ; $config- {database}{safety} を設定しているファイルは以下の通りです。 [Apache_server] └ [cgi-bin] └ [config] └ [admin] └ config_basic.pl セーフモードにて要求されるパーミッションファイルは以下の通りです。ファイルの内容は何でもかまいせん。 [permit_database_connect.txt] ログデータベースの操作のサンプル 以下は、ログを追記する場合のサンプルとなります。 まずはデータベース接続 my $log_database = Cafemilk_database_log- connect ({ config = $config, userdata = $userdata, log_error = $log_error, log_alert = $log_alert, status = $status, column_filename = log/access_log_column_list.csv , column_separator = , , database_filename = log/access_log , database_separator = , , record_stack = $config- {database}{log_stack}{common}, }); ログとして書き込む内容の作成 my $error = "@{$log_error}"; my $alert = "@{$log_alert}"; $error =~ s/\x0D\x0A|\x0D|\x0A//g; $alert =~ s/\x0D\x0A|\x0D|\x0A//g; my %records = ( id = $userdata- { time }, time = $userdata- { time }, admin_name = $userdata- {admin_registry_values}{admin_name}, user_name = $userdata- {user_registry_values}{user_name}, execute = $userdata- {request_values}{execute}[0], ip_address = $ENV{ REMOTE_ADDR }, referer = $ENV{ HTTP_REFERER }, # post = $ENV{ CONTENT_LENGTH }, # get = $ENV{ QUERY_STRING }, # cookie = $ENV{ HTTP_COOKIE }, # error = $error, # alert = $alert, ); 追記 $log_database- postscript(\%records); 終了処理 undef $log_database; 以下は、最後のレコードを取得する場合のサンプルとなります。 my $database = Cafemilk_database_log- connect ({ config = $config, userdata = $userdata, log_error = $log_error, log_alert = $log_alert, status = $status, column_filename = database/forum_thread_column_list.csv , column_separator = , , database_filename = database/admin_forum_thread , database_separator = , , record_stack = $config- {database}{session_stack}{admin_forum}{thread}, }); 条件に合う最後のレコードを取得 my $extract_database = $database- extract_last_record ({ extract_column_name = thread_id , extract_column_value = $message_values{thread_id}, }); %thread_values にレコードのカラム名と値を格納 %thread_values = $database- get_values_argument ({ database_values = $extract_database, }); undef $database; 以下は、最後のレコードを取得して内容を修正し、追記する場合のサンプルとなります。 my $database = Cafemilk_database_log- connect ({ config = $config, userdata = $userdata, log_error = $log_error, log_alert = $log_alert, status = $status, column_filename = log/sale_count_column_list.csv , column_separator = , , database_filename = log/sale_count , database_separator = , , record_stack = 10, }); my $extract_database = $database- extract_last_record ({ extract_column_name = dummy , extract_column_value = count , }); %count_values にレコードのカラム名と値を格納 my %count_values = $database- get_values_argument ({ database_values = $extract_database, }); %count_values の変更 $count_values{count} ++; $status- {sale_count} = $count_values{count}; $count_values{id} = $userdata- { time }; $count_values{time} = $userdata- { time }; $count_values{dummy} = count ; 追記 $database- postscript(\%count_values); undef $database; 以下は、データベスーから特定の条件に合うレコード(複数)を抽出して、抽出された各レコードを順次処理していく場合のサンプルとなります。 まずはデータベース接続 my $database = Cafemilk_database_log- connect ({ config = $config, userdata = $userdata, log_error = $log_error, log_alert = $log_alert, status = $status, column_filename = database/item_column_list.csv , column_separator = , , database_filename = database/item_news , database_separator = , , record_stack = $config- {database}{session_stack}{item}{news}, }); 全レコードの読み込み $database- get_record_all(); 追記により重複しているレコードを最新のものを除いて削除 $database- merge_database ({ column_name = item_id , }); 完全一致カラム抽出処理 my $target = multiprice ; $database- match_database ({ column_name = item_type , match_word = $target, }); 検索文字列の用意 文字列はスペース区切りで AND 検索となる my $words = $input_values{ search }; $words = Cafemilk_basic decode_escape ({ config = $config, userdata = $userdata, log_error = $log_error, log_alert = $log_alert, status = $status, text = $words, }); 検索の対象となるカラムの指定 my @columns = ( "item_id", "name_$userdata- {language_type}", "text_1_$userdata- {language_type}", "text_2_$userdata- {language_type}", "manufacturer_$userdata- {language_type}", "table_value_1_$userdata- {language_type}", "table_value_2_$userdata- {language_type}", "table_value_3_$userdata- {language_type}", "table_value_4_$userdata- {language_type}", "option_name_1_$userdata- {language_type}", "option_name_2_$userdata- {language_type}", "option_name_3_$userdata- {language_type}", ); 検索実行 $database- search_database ({ search_column = \@columns, search_words = $words, 英字の大文字と小文字の区別 1 でしない character_mode = 1 , }); 並び替え処理 $database- sort_database ({ column_name = "price_main_$userdata- {currency_type}", 逆順処理 1 で逆順 reverse_mode = 0 , 並び替えモード number_quick で数値モード character_quick で文字モード sort_mode = number_quick , }); 抽出・検索・並び替えされたレコードを取得 my @lines = $database- get_extract_database(); レコード処理 foreach (@lines) { my $line = $_; レコードの分割とカラム名との関連づけ my %target_values = $database- get_values_argument ({ database_values = $line, }); ここで例えばレコードの内容の表示処理を行う print $target_values{item_id}; } 終了処理 undef $database;